DB2表空间理论基础:表空间的管理方式
在DB2 V9版本中表空间的管理方式有系统管理表空间(SMS),数据库管理表空间(DMS)和自动存储管理,下面就以表空间的管理方式来介绍DB2的表空间。
系统管理空间概述
在SMS(系统管理空间)表空间中,操作系统的文件系统管理器分配和管理用于存储表的空间。该存储模型通常由存储在文件系统空间中的多个文件组成,这些文件表示表对象。用户决定文件的位置、DB2 数据库 Linux 版、UNIX 版和 Windows 版控制它们的名称,而文件系统负责管理它们。通过控制写入每个文件的数据量,数据库管理器均匀地将数据分布到所有表空间容器中。
每个表至少有一个与它相关的 SMS 物理文件。
表空间中的数据按系统中所有容器上的扩展数据块进行条带分割。扩展数据块是对数据库定义的一组连续页。文件扩展名表示该文件中存储的数据的类型。为了在表空间中的所有容器上平均分布数据,表的起始扩展数据块以循环方式分布在所有容器上。如果数据库中包含许多容量较小的表,那么这种扩展数据块分布特别重要。将数据写入多个容器时,建议执行 DB2 条带分割。
在 SMS 表空间中,表的空间大小是按需分配的。分配的空间量取决于multipage_alloc数据库配置参数的设置。如果将此配置参数设置为YES,那么需要空间时将分配完整的扩展数据块(通常包含两页或更多页)。否则,一次分配的空间将为一页。
缺省情况下,启用了多页文件分配功能。multipage_alloc 数据库配置参数值将指示是否已启用多页文件分配功能。
注: 多页文件分配功能不适用于临时表空间。多页文件分配将只影响一个表的数据和索引部分。这意味着 .LF、.LB 和 .LBA 文件并不会一次扩展一个扩展数据块。
系统管理空间设计
SMS 表空间是使用 CREATE DATABASE 命令上或 CREATE TABLESPACE 语句上的 MANAGED BY SYSTEM 选项定义的。当设计SMS表空间时,必须考虑两个关键要素:
表空间的容器:必须指定要用于表空间的容器数。标识要使用的所有容器是非常重要的,因为您不能在创建了 SMS 表空间之后添加或删除容器。当将单个容器中的所有空间都分配给表时,就认为该表空间“已满”,即使其他容器中还有剩余空间。仅当数据库分区中没有任何容器时,才能向该数据库分区中的 SMS 表空间添加容器。在分区数据库环境中,在将新数据库分区添加至 SMS 表空间的数据库分区组时,可以使用 ALTER TABLESPACE 语句将容器添加至新的数据库分区。
用于一个 SMS 表空间的每个容器都标识一个绝对或相对目录名。其中每一个目录都可以位于不同的文件系统(物理磁盘)上。表空间的最大大小可以按以下方法估计:
容器数 * (操作系统支持的最大文件系统大小)
此公式假定有一个唯一的文件系统映射至每个容器,且每个文件系统都具有最大量的可用空间。实际上,情况可能不是这样,表空间最大大小可能小得多。对于数据库对象的大小也有 SQL 限制,它可能影响表空间的最大大小。
注: 定义容器时必须很小心。如果容器上已有文件或目录,将返回一个错误(SQL0298N)。
表空间的扩展数据块大小
扩展数据块大小只能在创建表空间时指定。因为以后不能更改它,因此为扩展数据块大小选择一个适当的值就很重要。
创建表空间时,如果不指定扩展数据块大小,数据库管理器将使用缺省扩展数据块大小来创建表空间,该缺省大小由 dft_extent_sz数据库配置参数定义。此配置参数最初是根据创建该数据库时提供的信息设置的。如果未在CREATE DATABASE命令上指定 dft_extent_sz 参数,那么会将缺省扩展数据块大小设置为32。
要为表空间的容器数和扩展数据块大小选择适当的值,必须了解:
操作系统对逻辑文件系统的大小施加的限制。
例如,某些操作系统有 2GB 的限制。因此,如果想要一个 64GB 的表对象,那么在此类型的系统上将需要至少32个容器。
当创建该表空间时,可以指定位于不同文件系统上的容器,以便增加可以存储在该数据库中的数据量。
在创建表空间时,DB2为该表空间指定的第一个容器中创建第一个表数据文件(SQL00001.DAT),并允许此文件增大至该扩展数据块大小。当它达到此大小之后,数据库管理器将数据写入下一个容器中的 SQL00001.DAT。此过程会继续,直到所有容器都包含 SQL00001.DAT 文件为止,在那时,数据库管理器会返回至第一个容器。此过程(称为条带分割)会继续在容器目录中运行,直到一个容器装满为止(SQL0289N)或操作系统中不再有空间可分配为止(磁盘已满错误)。条带分割也用于索引(SQLnnnnn.INX)、长型字段(SQLnnnnn.LF)、 LOB(SQLnnnnn.LB 和 SQLnnnnn.LBA)以及XML(SQLnnnnn.XDA)文件。
注: 只要任何一个容器已满,SMS 表空间就满了。因此,每个容器具有相同容量的可用空间是很重要的。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/db2/11552.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
数据库(MSSQLServer,Oracle,DB
时间:2021-01-17
-
这样不容易出错
时间:2021-01-17
-
管理客户端从v9.7版本之后
时间:2021-01-17
-
3.3、点击Apply完成合并
时间:2021-01-17
-
用hbase存储所有的时序(无
时间:2021-01-13
-
图6 使用对象浏览器上的
时间:2021-01-13
-
还是建议大家安装要求来
时间:2021-01-13
-
Set) ExecuteScalar():从数
时间:2021-01-13
热门文章
-
还是建议大家安装要求来
时间:2021-01-13
-
数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以
时间:2021-01-17
-
那么SQL执行计划都会被执行; ⑤ 6.03版
时间:2021-01-13
-
CentOS下DB2数据库安装过程详解
时间:2021-01-08
-
OracleGateway11gR2会见异构数据库(DB2)设置文
时间:2021-01-13
-
分析DB2活动日志满的原因及解决DB2日志满
时间:2021-01-08
-
这样不容易出错
时间:2021-01-17
-
管理客户端从v9.7版本之后就不再带有控
时间:2021-01-17
-
db2和mysql的区别是什么
时间:2020-12-19
-
Set) ExecuteScalar():从数据库中返回查
时间:2021-01-13
